package com.service.infoEntry.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Data
public class ProgrammeVo {
    /**
     * 项目id
     */
    @ApiModelProperty("项目id")
    private String id;
    /**
     * 项目编号:年月日XXX(如2021080901) 序号
     */@ApiModelProperty("项目编号:年月日XXX(如2021080901) 序号")
    private String num;
    /**
     * 合同号
     */@ApiModelProperty("合同号")
    private String contractNo;
    /**
     * 项目名称
     */@ApiModelProperty("项目名称")
    private String name;
    /**
     * 服务类型：网络云服务（含老云管理）安全云服务 混合类（网络+安全+其他）
     */@ApiModelProperty("服务类型：网络云服务（含老云管理）安全云服务 混合类（网络+安全+其他）")
    private String serviceType;
    /**
     * 项目类型：新项目，新项目+存量项目，MSP-新项目，MSP-存量项目，MSP-新项目+存量项目
     */@ApiModelProperty("项目类型：新项目，新项目+存量项目，MSP-新项目，MSP-存量项目，MSP-新项目+存量项目")
    private String programmeType;
    /**
     * 创建者id
     */@ApiModelProperty("创建者")
    private UserVo userVo;
    /**
     * 团队id
     */@ApiModelProperty("团队id")
    private String teamId;
    /**
     * 项目描述
     */@ApiModelProperty("项目描述")
    private String description;
    /**
     * 行业
     */@ApiModelProperty("行业")
    private String business;
    /**
     * L3行业
     */@ApiModelProperty("L3行业")
    private String industryLevelThree;
    /**
     * 代表处（新增）
     */@ApiModelProperty("代表处（新增）")
    private String repOffice;
    /**
     * 区域
     */@ApiModelProperty("区域")
    private String region;
    /**
     * 立项时间
     */@ApiModelProperty("立项时间")
    private Date addTime;
    /**
     * 录入时间（自动生成）
     */@ApiModelProperty("录入时间（自动生成）")
    private Date insertDate;
    /**
     * 项目状态修改后：0--启动 1--POC试用 2--形成PO 3--交付验收 4--形成收入 5--持续运维 1-1--挂起（11试用未转商用）1-2--丢标（12异常关闭）
     * :0-启动;1-下单;2-交付;3-运维;4-关闭
     */@ApiModelProperty("项目状态修改后：0--启动 1--POC试用 2--形成PO 3--交付验收 4--形成收入 5--持续运维 1-1--挂起（11试用未转商用）1-2--丢标（12异常关闭） ")
    private Integer status;
    /**
     * 项目把握度：0% 10% 25% 50% 75% 100%
     */@ApiModelProperty("项目把握度：0% 10% 25% 50% 75% 100%")
    private String proPower;
    /**
     * 项目背景（包括友商信息）
     */@ApiModelProperty("项目背景（包括友商信息）")
    private String proBack;
    /**
     * 项目规模（设备型号+数量）
     */@ApiModelProperty("项目规模（设备型号+数量）")
    private String scale;
    /**
     * 跟踪状态 1--进行中 2--关闭 3--挂起
     */@ApiModelProperty("跟踪状态 1--进行中 2--关闭 3--挂起")
    private String trackStatus;
    /**
     * 是否top项目：1--true 0--false（新增）
     */@ApiModelProperty("是否top项目：1--true 0--false（新增）")
    private Boolean isTop;
    /**
     * 预计试用台数
     */@ApiModelProperty("预计试用台数")
    private Integer expTrialCount;
    /**
     * 已TRY台数
     */@ApiModelProperty("已TRY台数")
    private Integer tryCount;
    /**
     * 已BUY台数
     */@ApiModelProperty("已BUY台数")
    private Integer buyCount;
    /**
     * 预计商用台数
     */@ApiModelProperty("预计商用台数")
    private Integer expCommercialCount;
    /**
     * 预估下单时间
     */@ApiModelProperty("预估下单时间")
    private Date expOrderTime;
    /**
     * 实际下单时间
     */@ApiModelProperty("实际下单时间")
    private Date actualOrderTime;
    /**
     * 项目进展
     */@ApiModelProperty("项目进展")
    private String process;
    /**
     * 困难和风险
     */@ApiModelProperty("困难和风险")
    private String difficultiesOrRisk;
    /**
     * 一线客户经理
     */@ApiModelProperty("一线客户经理")
    private String lineCusManage;
    /**
     * 一线商业经理
     */@ApiModelProperty("一线商业经理")
    private String lineBusinessManage;
    /**
     * 一线行业代表
     */@ApiModelProperty("一线行业代表")
    private String lineIndustryRep;
    /**
     * 产品经理
     */@ApiModelProperty("产品经理")
    private String lineProductManage;
    /**
     * 运营责任人（新增）
     */@ApiModelProperty("运营责任人")
    private String operationPerson;
    /**
     * 是否私密:true-1-公开;false-0-私密
     */@ApiModelProperty("是否私密:true-1-公开;false-0-私密")
    private String programmeStatus;
    /**
     * 项目关闭原因
     */@ApiModelProperty("项目关闭原因")
    private String closeReason;
    /**
     * 刷新时间
     */@ApiModelProperty("刷新时间")
    private Date updateTime;
    /**
     * 项目关闭时间
     */@ApiModelProperty("项目关闭时间")
    private Date closeTime;
    /**
     * 客户联系人-姓名
     */@ApiModelProperty("客户联系人-姓名")
    private String cusContactsName;
    /**
     * 客户联系人-电话
     */@ApiModelProperty("客户联系人-电话")
    private String cusContactsTel;
    /**
     * 客户联系人-邮箱
     */@ApiModelProperty("客户联系人-邮箱")
    private String cusContactsEmail;
    /**
     * 问题举措
     */@ApiModelProperty("问题举措")
    private String problemInitiatives;
    /**
     * MSP(销-硬件)名称
     */@ApiModelProperty("MSP(销-硬件)名称")
    private String mspPinHwName;
    /**
     * MSP(销-硬件)联系人-姓名
     */@ApiModelProperty("MSP(销-硬件)联系人-姓名")
    private String mspPinHwConName;
    /**
     * MSP(销-硬件)-联系人-电话
     */@ApiModelProperty(" MSP(销-硬件)-联系人-电话")
    private String mspPinHwConTel;
    /**
     * MSP(销-硬件)-联系人-邮箱
     */@ApiModelProperty("MSP(销-硬件)-联系人-邮箱")
    private String mspPinHwConEmail;
    /**
     * MSP(服-硬件)名称
     */@ApiModelProperty("MSP(服-硬件)名称")
    private String mspSerHwName;
    /**
     * MSP(服-硬件)-联系人-邮箱
     */@ApiModelProperty("MSP(服-硬件)-联系人-邮箱")
    private String mspSerHwConEmail;
    /**
     * MSP(服-硬件)-联系人-电话
     */@ApiModelProperty("MSP(服-硬件)-联系人-电话")
    private String mspSerHwConTel;
    /**
     * MSP(服-硬件)联系人-姓名
     */@ApiModelProperty("MSP(服-硬件)联系人-姓名")
    private String mspSerHwConName;
    /**
     * MSP(销-云服务)名称
     */@ApiModelProperty("MSP(销-云服务)名称")
    private String mspPinCloudName;
    /**
     * MSP(销-云服务)联系人-姓名
     */@ApiModelProperty("MSP(销-云服务)联系人-姓名")
    private String mspPinCloudConName;
    /**
     * MSP(销-云服务)联系人-电话
     */@ApiModelProperty("MSP(销-云服务)联系人-电话")
    private String mspPinCloudConTel;
    /**
     * MSP(销-云服务)联系人-邮箱
     */@ApiModelProperty(" MSP(销-云服务)联系人-邮箱")
    private String mspPinCloudConEmail;
    /**
     * MSP(服-云服务)-名称
     */@ApiModelProperty("MSP(服-云服务)-名称")
    private String mspSerCloudName;
    /**
     * MSP(服-云服务)联系人-电话
     */@ApiModelProperty("MSP(服-云服务)联系人-电话")
    private String mspSerCloudConTel;
    /**
     * MSP(服-云服务)联系人-姓名
     */@ApiModelProperty("MSP(服-云服务)联系人-姓名")
    private String mspSerCloudConName;
    /**
     * MSP(服-云服务)联系人-邮箱
     */@ApiModelProperty("MSP(服-云服务)联系人-邮箱")
    private String mspSerCloudConEmail;
    /**
     * 客户名称
     */@ApiModelProperty("客户名称")
    private String cusName;
    /**
     * 客户公司名称
     */@ApiModelProperty("客户公司名称")
    private String cusCpName;
    /**
     * 客户公司地点
     */@ApiModelProperty("客户公司地点")
    private String cusCpPlace;
    /**
     * 客户信息来源
     */@ApiModelProperty("客户信息来源")
    private String cusInfoSource;
    /**
     * 客户线索获取日期
     */@ApiModelProperty("客户线索获取日期")
    private Date cusClueSourceDate;
    /**
     * 客户标签
     */@ApiModelProperty("客户标签")
    private String cusLabel;
    /**
     * 客户注册时间
     */@ApiModelProperty("客户注册时间")
    private Date cusRegisterTime;
    /**
     * 客户乾坤云账号
     */@ApiModelProperty("客户乾坤云账号")
    private String cusTenantAccount;
    /**
     * 客户优先级标签
     */@ApiModelProperty("客户优先级标签")
    private String cusPriLabel;
    /**
     * 客户价值标签
     */@ApiModelProperty("客户价值标签")
    private String cusValueLabel;
    /**
     * 客户需求
     */@ApiModelProperty("客户需求")
    private String cusDemand;
    /**
     * 客户预算
     */@ApiModelProperty("客户预算")
    private String cusBudget;
    /**
     * 客户上次联系时间
     */@ApiModelProperty("客户上次联系时间")
    private Date cusLastContactTime;
    /**
     * 客户互动备注
     */@ApiModelProperty("客户互动备注")
    private String cusRemarks;
    private String statusStr;
    private String programmeStatusStr;
    /**
     * 是否已被删除:1-已被删除;0-未被删除
     */
    private boolean isDeleted;

    /**
     * 附件
     */
    private List<Map<String,String>> accessories;

    //项目状态:0-启动;1-下单;2-交付;3-运维;4-关闭
    // 1-1--挂起（试用未转商用）1-2--丢标（异常关闭）
    public String getStatusStr() {
        if(status != null)
        {
            switch (status){
                case 0:
                    statusStr = "启动";
                    break;
                case 1:
                    statusStr = "POC试用";
                    break;
                case 2:
                    statusStr = "形成PO";
                    break;
                case 3:
                    statusStr = "交付验收";
                    break;
                case 4:
                    statusStr = "形成收入";
                    break;
                case 5:
                    statusStr = "持续运维";
                    break;
                case 11:
                    statusStr = "挂起";
                    break;
                case 12:
                    statusStr = "丢标";
                    break;
            }
        }
        return statusStr;
    }

    //项目状态:true-1-公开;false-0-私密
    public String getProgrammeStatusStr() {
        if(null != programmeStatus && !"".equals(programmeStatus)){
            if(programmeStatus.equals("1"))
            {
                programmeStatusStr = "公开";
            }else if("0".equals(programmeStatus))
            {
                programmeStatusStr = "私密";
            }
        }
        return programmeStatusStr;
    }
}
